Object & interface
[Object當參考型別]
編譯器是看參考型別來決定哪些method可以呼叫,而不是根據物件真正的型別,ex.任何從
ArrayList<Object>
這樣宣告的形式,取出來的東西都會被當作Object的型別參考,而不管它本來是什麼,也就是說,邊意氣根本不管物件的型別,而是只管參考的型別
[轉換回原本型別]
->如果確定他是某個型別的話,那你可以直接從Object內copy一份原本的參考,並指派參考變數給原本的參考
->若不確定它原本的參考是什麼,那麼可以使用instanceof來檢查,ex.假設原來的參考為Animal,且被改變參考的是o
if(o instanceof Animal){
Animal a = (Animal)o;
}
->若是型別轉換錯誤,則會在直行的時候遇到ClassCastException且當掉
[interface]
->interface的所有method都是抽象的,任何implement他的class都必須要時實作出這些method
->interface定義
public interface Child{...}
->interface實作
public class Human extends Animal implement Child{...}